/**
 * @p.md
 * 
 * PersistenceProvider 接口定义了持久化存储的基本功能
 */

/**
 * 持久化提供者接口，用于存储和检索事件和快照
 */
export interface PersistenceProvider {
  /**
   * 获取指定持久化 ID 的事件
   * @param persistenceId 持久化 ID
   * @param fromIndex 开始索引（包含）
   * @param toIndex 结束索引（包含）
   * @returns 事件数组
   */
  getEventsByPersistenceId(persistenceId: string, fromIndex: number, toIndex: number): Promise<any[]>;
  
  /**
   * 获取指定持久化 ID 的最新快照
   * @param persistenceId 持久化 ID
   * @returns 快照数据，如果不存在则返回 null
   */
  getSnapshotByPersistenceId(persistenceId: string): Promise<any | null>;
  
  /**
   * 持久化事件
   * @param persistenceId 持久化 ID
   * @param eventIndex 事件索引
   * @param event 事件数据
   */
  persistEvent(persistenceId: string, eventIndex: number, event: any): Promise<void>;
  
  /**
   * 持久化快照
   * @param persistenceId 持久化 ID
   * @param snapshotIndex 快照索引
   * @param snapshot 快照数据
   */
  persistSnapshot(persistenceId: string, snapshotIndex: number, snapshot: any): Promise<void>;
  
  /**
   * 删除事件
   * @param persistenceId 持久化 ID
   * @param fromIndex 开始索引（包含）
   * @param toIndex 结束索引（包含）
   */
  deleteEvents(persistenceId: string, fromIndex: number, toIndex: number): Promise<void>;
  
  /**
   * 删除快照
   * @param persistenceId 持久化 ID
   * @param fromIndex 开始索引（包含）
   * @param toIndex 结束索引（包含）
   */
  deleteSnapshots(persistenceId: string, fromIndex: number, toIndex: number): Promise<void>;
} 